<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    
</body>
<script>
    /* 
    变量是一种使用方便的占位符，用于引用计算机内存地址，
    该地址可以存储script运行时可更改的程序信息，是一个存放数据的容器
    语法：js中变量通过利用var关键字声明，并且变量名的命名规则与标识符相同
    要声明一个变量首先需要使用关键字var，然后输入任何你想要的名称
    （要具有一定意义要符合标识符命名规则）
    */

    // 声明变量
    var age;
    // 给变量赋值（变量初始化）
    age=10;
    // 变量初始化 =不是等于，是赋值符：把18赋值给age1
    var age1=18;
    
    var name ='哦是大美女';

    // 同时声明多个变量
    var age,name;
    age=18;
    name='sam'
    // 同时声明多个变量并赋值
    var age=20,name='mike';
    // 不使用var声明
    gender='男';
    /* 
    注意点：不声明直接省略var关键字为变量赋值不会发生错误
        但是在函数内部不用var的变量是全局变量
    */

    // 变量在内存中的存储 
    // 变量的本质是在内存中申请的一块用来存放数据的空间

    // 在同一作用域中，不允许声明相同标识符的变量（只能用var声明一次一个标识符）
    var a=8,b=4;
    a=a-b;
    b=b+a;
    a=b-a;
    document.write(a,b)

    // 声明变量提升
    // 变量被定义后，可以通过变量名读取变量的值
    // 如果先读取后定义
    var num; //undefind
    console.log(num);
    var num=1;//undefind

    // 由于变量的声明会被提升到当前作用域的最顶端，而复制不会被提升
    var num; 
    console.log(num);
    num=1;

</script>
</html>